﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Linq;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DAL_NhaSach;
using BLL_NhaSach;
using System.Collections;

namespace AppQlyNhaSach.NhanVien
{
    public partial class frmChucVu : DevExpress.XtraEditors.XtraForm,IDataGrid
    {
        ChucVuBLL cvBLL;

        public frmChucVu()
        {
            InitializeComponent();
        }

        private void frmChucVu_Load(object sender, EventArgs e)
        {
			cvBLL = new ChucVuBLL(Properties.Settings.Default.ConnectionStringUser);
            grdChucVu.DataSource = cvBLL.getAllData();
        }

        private void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            try
            {
                int id = (Int32)gridView1.GetFocusedRowCellValue("MaChucVu");
                ChucVu cv = (ChucVu)cvBLL.findObjects(id);
                txtMa.Text = cv.MaChucVu.ToString();
                txtTen.Text = cv.TenChucVu;
                chkHeThong.Checked = cv.QLHeThong;
                chkKhoSach.Checked = cv.QLKhoSach;
                chkNhanVien.Checked = cv.QLNhanVien;
                chkNhapXuat.Checked = cv.QLNhapXuat;
                chkThuChi.Checked = cv.QLThuChi;
                chkBanHang.Checked = cv.BanSach;
            }
            catch { }
        }

        public System.Collections.ArrayList getRowsID()
        {
            ArrayList lst_id = new ArrayList();
            int[] ids = gridView1.GetSelectedRows();
            foreach (int i in ids)
            {
                int id = (Int32)gridView1.GetRowCellValue(i,"MaChucVu");
                lst_id.Add(id);
            }
            return lst_id;
        }

        private void xóaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DialogResult r = XtraMessageBox.Show("Bạn có chắc chắn muốn xóa các chức vụ này?", "Cảnh báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (r == DialogResult.Yes)
            {
                ArrayList lst_id = getRowsID();
                if (lst_id.Count != 0)
                {
                    try
                    {
                        foreach (int i in lst_id)
                        {
                            cvBLL.deleteObject(i);
                        }
                        XtraMessageBox.Show("Xoá thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        grdChucVu.DataSource = cvBLL.getAllData();
                    }
                    catch (Exception)
                    {
                        XtraMessageBox.Show("Xoá không thành công", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    XtraMessageBox.Show("Không thể xóa khi chưa có chức vụ nào được chọn");
                }
            }
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            if(btnThem.Text.Equals("&Thêm"))
            {
                changeState(true);
                txtTen.Text = "";

            }else if(btnThem.Text.Equals("Xác Nhận")){
                DialogResult r = XtraMessageBox.Show("Bạn có chắc chắn muốn thêm mới chức vụ này không?", "Xác Nhận", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (r == DialogResult.Yes)
                {
                    ChucVu cv = new ChucVu();
                    cv.TenChucVu = txtTen.Text;
                    cv.QLHeThong = chkHeThong.Checked;
                    cv.QLKhoSach = chkKhoSach.Checked;
                    cv.QLNhanVien = chkNhanVien.Checked;
                    cv.QLNhapXuat = chkNhapXuat.Checked;
                    cv.QLThuChi = chkThuChi.Checked;
                    cv.BanSach = chkBanHang.Checked;
                    if (cvBLL.addObject(cv))
                    {
                        XtraMessageBox.Show("Thêm mới thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        changeState(false);
                        grdChucVu.DataSource = cvBLL.getAllData();
                    }
                    else
                    {
                        XtraMessageBox.Show("Mã chức vụ bị trùng", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                
            }
            else
            {
                ChucVu cv = new ChucVu();
                cv.MaChucVu = int.Parse(txtMa.Text);
                cv.TenChucVu = txtTen.Text;
                cv.QLHeThong = chkHeThong.Checked;
                cv.QLKhoSach = chkKhoSach.Checked;
                cv.QLNhanVien = chkNhanVien.Checked;
                cv.QLNhapXuat = chkNhapXuat.Checked;
                cv.QLThuChi = chkThuChi.Checked;
                cv.BanSach = chkBanHang.Checked;
                if (cvBLL.updateObject(cv))
                {
                    XtraMessageBox.Show("Cập nhật thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    grdChucVu.DataSource = cvBLL.getAllData();
                    grdChucVu.Enabled = true;
                    txtTen.Properties.ReadOnly = true;
                    btnThem.Text = "&Thêm";
                    btnHuy.Visible = false;

                }
                else
                {
                    XtraMessageBox.Show("Cập nhật thất bại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                }
            }

        }

        /// <summary>
        /// Reset lại dữ liệu về ban đầu
        /// </summary>
        private void changeState(bool state){
            if (state)
            {
                txtMa.Hide();
                foreach (var chk in grpPhanQuyen.Controls)
                {
                    CheckEdit c = (CheckEdit)chk;
                    c.Checked = false;
                }
                grpPhanQuyen.Enabled = true;
                txtTen.Properties.ReadOnly = false;
                btnThem.Text = "Xác Nhận";
                grdChucVu.Enabled = false;
                btnHuy.Visible = true;
            }
            else
            {
                txtMa.Show();
                grpPhanQuyen.Enabled = false;
                txtTen.Properties.ReadOnly = true;
                gridView1.FocusedRowHandle = 0;
                btnThem.Text = "&Thêm";
                grdChucVu.Enabled = true;
                btnHuy.Visible = false;
            }
        }

        private void btnHuy_Click(object sender, EventArgs e)
        {
            changeState(false);
            btnThem.Enabled = true;
        }

        private void txtTen_EditValueChanged(object sender, EventArgs e)
        {
            if (txtTen.Text.Length == 0)
                btnThem.Enabled = false;
            else btnThem.Enabled = true;
        }

        private void sửaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ArrayList lst = getRowsID();
            if (lst.Count == 1)
            {
                grpPhanQuyen.Enabled = true;
                btnThem.Text = "Cập Nhật";
                txtMa.Show();
                int id = int.Parse(txtMa.Text);
                txtTen.Properties.ReadOnly=false;
                btnHuy.Visible = true;
            }
            else
            {
                XtraMessageBox.Show("Chỉ chọn một chức vụ đẻ sửa");
            }
        }

        private void frmChucVu_FormClosing(object sender, FormClosingEventArgs e)
        {
            frmMainNS.isChucVu = false;
        }

    
    }
}